package com.jqyd.mod.orm;

import java.sql.SQLException;

import com.jqyd.mod.orm.exception.ORMException;

/**
 * Table工具，当前所有表更新实现为增量更新，只增加字段，不减少字段。不支持原有字段改变类型
 * @author modi
 *
 */
public interface TableUtil {
	/**
	 * 创建数据库表
	 * @param c
	 * @throws SQLException
	 */
	void createTable(Class<?> c) throws ORMException;
	/**
	 * 更新一张表，不判断版本号
	 * @param c
	 * @throws SQLException
	 */
	void updateTable(Class<?> c) throws ORMException;
	/**
	 * 自动更新当前已有所有表（根据各表的版本号自动判断需要更新的表，并更新）
	 * @throws SQLException
	 */
	void autoUpdateAllTables() throws ORMException;
	/**
	 * 自动更新指定表（判断版本号）
	 * @param c
	 * @throws SQLException
	 */
	void autoUpdateTable(Class<?> c) throws ORMException;
	/**
	 * 校验指定表是否已存在，存在返回true
	 * @param tableName
	 * @return
	 * @throws SQLException
	 */
	boolean valiTableExist(String tableName) throws ORMException;
	/**
	 * 创建中间表
	 * @param c
	 * @param childClass
	 * @throws ORMException
	 */
	void createMiddleTable(Class<?> c, Class<?> childClass) throws ORMException;
}
